In general, networks and computers operate in different manners. Networks operate by transferring data in streams and/or packets. Streams may be bit-sized, byte-sized, or otherwise broken down. Packets may be of relatively large size, such as 64, 512, or more bytes each. Computers operate by processing data, typically in well-defined small sizes, such as bytes (8 bits), words (16 bits), double words (32 bits) and so on. At the interface between a computer and a network, a translation or reorganization of data may be necessary. This may include reorganizing data from a series of packets into a format useful to a processor. In particular, this may include taking data bits of a series of bytes and reorganizing them into a form including only data bits. A similar problem may occur at a byte-level, wherein some bytes of a group of bytes are data bytes, and other bytes are effectively control bytes which need to be parsed out of data.
Determining which bytes received are control or data bytes often is the function of a network processor within a system, which is also charged with the task of processing all data bytes. As data bytes tend to be the largest portion of network traffic, the network processor has a heavy workload within the system. Moreover, network processors typically do not run at line speed (the speed at which data is transferred) when processing, because of the heavy workload from processing data along with the demand to determine what type of control or data bytes are received.